#include <iostream>

#include "coin2/base/time.h"
#include "coin2/exchange/bithumb/symbology/product.h"
#include "coin2/exchange/coinone/symbology/product.h"
#include "coin2/exchange/quoinex/symbology/product.h"
#include "coin2/exchange/upbit/symbology/product.h"

int main() {
  using BithumbProduct = coin2::exchange::bithumb::symbology::BithumbProduct;
  using UpbitProduct = coin2::exchange::upbit::symbology::UpbitProduct;
  using CoinoneProduct = coin2::exchange::coinone::symbology::CoinoneProduct;
  using QuoinexProduct = coin2::exchange::quoinex::symbology::QuoinexProduct;
  auto curr_time = impl::GetCurrentTimestamp();
  /*
  auto product = BithumbProduct::FromNormStrNoThrow(std::string("TRX-KRW"), curr_time);
  if (product) std::cout << product->feed_native_symbol() << " hello" << std::endl;
  product = BithumbProduct::FromNativeStrNoThrow(std::string("TRX=KRW"), curr_time);
  if (product) std::cout << product->feed_native_symbol() << " world" << std::endl;
  */
  auto upbit_product = UpbitProduct::FromNormStrNoThrow(std::string("TRX-KRW"), curr_time);
  if (upbit_product) std::cout << upbit_product->feed_native_symbol() << " hello" << std::endl;
  upbit_product = UpbitProduct::FromNativeStrNoThrow(std::string("KRW-TRX"), curr_time);
  if (upbit_product) std::cout << upbit_product->feed_native_symbol() << " world" << std::endl;
  auto coinone_product = CoinoneProduct::FromNormStrNoThrow(std::string("BCH-KRW"), curr_time);
  coinone_product = CoinoneProduct::FromNativeStrNoThrow(std::string("BCH-BTC"), curr_time);
  auto quoinex_product = QuoinexProduct::FromNormStrNoThrow(std::string("BTC-JPY"), curr_time);
  // quoinex_product = QuoinexProduct::FromNativeStrNoThrow(std::string("BTCJPY"), curr_time);
}
